import pandas as pd
# 1. 定义数据处理类（封装筛选逻辑）
class DataProcessor:
    def __init__(self, df):
        """初始化时传入要处理的 DataFrame"""
        self.df = df

    def _normalize(self, col):
        """
        列名规范化：将列名转为小写 + 去除空格（可根据需求调整规则）
        例如：'User Name' → 'username'，'EMAIL' → 'email'
        """
        return col.lower().replace(" ", "")

    def filter_priority_columns(self, priority_list):
        """
        筛选包含 priority_list 中任意关键词的列
        :param priority_list: 优先级关键词列表（如 ['name', 'email', 'phone']）
        :return: 符合条件的列名列表
        """
        candidates = [
            col for col in self.df.columns  # 遍历所有列名
            if any(  # 只要有一个关键词匹配，就保留该列
                kw in self._normalize(col)  # 检查关键词是否在规范化后的列名中
                for kw in priority_list
            )
        ]
        return candidates


# 2. 准备示例数据（模拟实际业务场景）
data = {
    "姓名": ['zhangsan', 'lisi', 'wangwu'],  # 对应关键词 'name'
    "年龄": [20, 30, 40],  # 无匹配关键词
    "用户邮箱": [4, 5, 6],  # 对应关键词 'email'
    "联系电话": [7, 8, 9],  # 对应关键词 'phone'
    "性别": ["男", "女", "男"]  # 无匹配关键词
}
df = pd.DataFrame(data)

# 3. 配置优先级关键词 & 执行筛选
priority_keywords = ["姓名", "email", "phone"]  # 要匹配的关键词
processor = DataProcessor(df)  # 实例化处理器
filtered_cols = processor.filter_priority_columns(priority_keywords)

# 4. 输出结果（验证逻辑 correctness）
print("原始 DataFrame 列名:", df.columns.tolist())
print("优先级关键词:", priority_keywords)
print("筛选后的列名:", filtered_cols)
print("筛选后的 DataFrame:", df)
